package cn.com.bluemoon.daps.standard.service;

import cn.com.bluemoon.daps.common.domain.UserInfoHolder;
import cn.com.bluemoon.daps.standard.vo.StandardDataModifyVo;
import cn.com.bluemoon.daps.standard.vo.StandardListSearchVo;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springframework.validation.annotation.Validated;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;

/**
 * @author Jarod.Kong
 * @date 2020/8/20 9:07
 */
@Validated
public interface DapStandardAuditService {

    /**
     * 通过流程
     * @since 2020年10月13日 通过 增加变更类型入参（由于删除操作走流程变更，当确认通过时要对标准进行删除
     *@param auditId
     */
    void passAudit(@NotNull(message = "流程id不可为空") String... auditId);

    /**
     * @param standardListSearchVo 查询条件 非空
     * @return
     */
    IPage<StandardDataModifyVo> auditList(@NotNull(message = "查询条件不可为空") StandardListSearchVo<?> standardListSearchVo);

    /**
     * 不通过流程
     *
     * @param auditId
     */
    void unpassAudit(@NotNull(message = "流程id不可为空") String... auditId);

    /**
     * 获取标准唯一id对应的所有版本数据（tree)
     *
     * @param standardUniqueId
     * @param tree
     * @return
     */
    List<StandardDataModifyVo> viewVersions(@NotBlank(message = "标准唯一id不可为空") String standardUniqueId, boolean tree);

    /** 记录版本 */
    void saveStandardVersion(List<String> auditIds, String modifyDesc, UserInfoHolder.UserInfo userInfo);
}
